package com.doxiaopu.students.user.service;

import com.doxiaopu.students.component.exception.*;
import com.doxiaopu.students.user.entity.PersonRelation;
import com.doxiaopu.students.user.entity.User;
import com.doxiaopu.students.user.vo.OrganizationTypesVO;

import java.util.List;
import java.util.Map;

public interface IUserService {
    /**
     * 注册信息
     * @param user
     * @return
     */
    User reg(User user) throws DuplicateKeyException, InsertException;
    /**
     * 用户注册
     * @param username 用户名
     * @param password  密码
     * @return  登录成功返回的密码
     * @throws PasswordNotMathException
     * @throws UserNotFoundException
     */
    User login(String username , String password) throws PasswordNotMathException, UserNotFoundException;

    /**
     * 更改用户资料
     * @param user
     */
    void changeInfo(User user) throws UpdateException;

    /**
     * 通过id查询用户资料
     * @param
     * @return
     */
    User getInfo(Integer id);

    /**
     * 插叙你
     * @return
     */
    Map<String, Object> getAllInfo(String phone,Integer types, Integer currentPage, Integer pageSize);

    /**
     * 更改该用户余额
     * @param add
     * @param decrease
     * @param id
     * @return
     */
    Integer updateBalanceInfo(String TUserId, Integer add,Integer decrease,Integer id);

    /**
     * 获得组织内成员
     * @param
     * @return
     */
    List<User> getCommunityUserList(Integer id);

    /**
     *
     * @param id
     * @return
     */
    List<User> getApplyCommunityUserList(Integer id);

    /**
     * 社团审核成员
     * @param organizationTypesVO
     * @param id
     * @return
     */
    Integer updateOrgTypes(OrganizationTypesVO organizationTypesVO,Integer id);

    /**
     * 创建好友关系表
     * @param personRelation
     * @return
     */
    Integer addChatPersonRelation(Integer id, PersonRelation personRelation);

    /**
     * 通过自己的用户id查询自己的好友id信息
     * @param sendPersonId
     * @return
     */
    String checkRecivePsersonId(String sendPersonId,String acceptPersonId);

}
